package com.buaa.student.controller;

import com.buaa.student.constant.DakaConstant;
import com.buaa.student.pojo.Dakatoken;
import com.buaa.student.service.DakaTokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

@Controller
public class DakaTokenController {

    @Autowired
    private DakaTokenService dakaTokenService;

    @GetMapping("/testauto")
    String test(){
        dakaTokenService.autoDakaAll();
        return "index";
    }


    //1.自动发请求到后台进行打卡，并不需要url
    //cron表达式从左到右（用空格隔开）：秒 分 小时 日期 月份 星期 年份
    //每天下午5点01分触发
    @Scheduled(cron="0 1 17 ? * *")
    void AutoPost(){
        dakaTokenService.autoDakaAll();

        System.out.println("定时打卡，定时调度执行成功~");
    }

    //1.自动发请求到后台进行打卡，并不需要url
    //cron表达式从左到右（用空格隔开）：秒 分 小时 日期 月份 星期 年份
    //每天上午10点01分触发
    @Scheduled(cron="0 1 10 ? * *")
//    @Scheduled(cron="0 31 19 ? * *")
    void AutoReset(){
        dakaTokenService.resetAll();

        System.out.println("定时重置，定时调度执行成功~");
    }


    //2.查看今日成功打卡的同学名单，失败的同学名单
    @GetMapping("/today")
    String today(Model model) {

        List<Dakatoken> successList = dakaTokenService.getListByFlag(DakaConstant.DakaStatusEnum.SUCCESS.getCode());
        List<Dakatoken> failList = dakaTokenService.getListByFlag(DakaConstant.DakaStatusEnum.FAIL.getCode());
        model.addAttribute("successList", successList);
        model.addAttribute("failList", failList);
        return "todaySucceess";
    }

    //3.失败重试，对今日自动打卡失败的同学进行再试1次的操作
    @GetMapping("/failretry")
    String failRetry(Model model) {
        dakaTokenService.autoDakaFail();

        List<Dakatoken> successList = dakaTokenService.getListByFlag(DakaConstant.DakaStatusEnum.SUCCESS.getCode());
        List<Dakatoken> failList = dakaTokenService.getListByFlag(DakaConstant.DakaStatusEnum.FAIL.getCode());
        model.addAttribute("successList", successList);
        model.addAttribute("failList", failList);
        return "redirect:/today";
    }

}
